/**
 * 
 */
package command.actions;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import command.Command;

import database.MaConnexion;
import database.ProduitDAO;

import beans.Panier;
import beans.Produit;

/**
 * @author faubry
 * 
 */
public class AjouterProduit implements Command {

	/*
	 * (non-Javadoc)
	 * 
	 * @see command.Command#execute(javax.servlet.http.HttpServletRequest,
	 * javax.servlet.http.HttpServletResponse)
	 */
	@Override
	public String execute(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("command:" + this.getClass());

		// récup session
		HttpSession session = request.getSession(false);

		// session existe ?
		if (session != null) {
			/**
			 * récup du panier chargé au démarrage de la session
			 */
			Panier monPanier = (Panier) session.getAttribute("panier");

			/**
			 * liste des produits - pour affichage
			 */
			List<Produit> listeProduits= new ArrayList<Produit>();

//			// récup du panier s'il existe
//			if (session.getAttribute("panier") != null) {
//				monPanier = (Panier) session.getAttribute("panier");
//			} else {
//				// sinon création du panier vide
//				monPanier = new Panier();
//			}


			// récupération en bdd de la liste des produits
			try {
				listeProduits = new ProduitDAO(MaConnexion.getInstance().getConnexion()).getList();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			// si fruit sélectionné on récupère son id (value de l'option du
			// select)
			String idProduit = request.getParameter("produit");

			// on devrait tester si le paramètre est bien non nul et
			// un chiffre...
			int quantite = Integer.parseInt(request.getParameter("quantite"));

			// ajout du produit et sa quantité au panier
			// récup du produit
			Produit produit = null;
			// parcours des produits de la liste jusqu'à trouver le bon pour le
			// récupérer
			for (Produit p : listeProduits) {
				if (p.getId() == Integer.valueOf(idProduit)) {
					produit = p;
					continue;
				}
			}
			// si produit toujours null, la méthode add ne l'ajoute pas au
			// panier
			monPanier.add(produit, Integer.valueOf(quantite));
			// mise en session du panier mis à jour
			session.setAttribute("panier", monPanier);
			// affichage
			return ("/magasin?cmd=id");
		}
		// retour à l'index dans tous les cas
		return ("/magasin?cmd=doLogin");
	}
}
